1. Field of Art
The present invention generally relates to the field of distributed computer systems, and more specifically, to increasing the availability of a distributed complex event processing system.
2. Description of the Related Art
Complex Event Processing (CEP) computer systems recognize input events, or patterns of input events, within one or more input event streams and perform an action responsive to detecting an input event or input event pattern. In some configurations, the CEP system receives input from multiple sources, such as multiple computers.
Conventional CEP systems use multiple components to process events. An event processing engine detects one or more particular events in an input event stream and triggers output actions or alerts when certain events are detected. Filters or adapters are used to modify the input so that regardless of the initial input format, the event processing engine receives input in a consistent format and generates output in a format suitable for subsequent use. Many configurations include additional components for configuring, managing and monitoring system operation.
Commonly, the event processing engine and the filters are implemented using a combination of hardware and software. For example, general purpose computer hardware running multiple software processes is used to implement the event processing engine as a software process. Alternatively, the event processing engine is implemented using multiple software processes running on a plurality of separate computer systems as a distributed computer system.
However, different components of the distributed computer system, such as the communication network, the computer hardware and the software running on the computer hardware, can fail independently of each other. For example, if one of the separate computer systems fails, software running on the failed computer system is moved from the failed computer system to another computer system within the distributed computer system and other distributed computer systems continue operating. This failure of different system components adversely affects overall system operation. In particular, component failure causes data loss, delayed or incorrect outputs and inoperability of all or part of the distributed computer system.